package Day13.作用域;

/**
 * 1.在Java编程中，主要的变量就是属性（成员变量）和局部变量。
 * 2.我们说的局部变量一般是指在成员方法中定义的变量
 * 3.Java中作用域的分类：
 * 全局变量：也就是属性，作用域为整个类体 Cat类：cry eat等方法都属于属性
 * 局部变量：也就是除了属性之外的其他变量，作用域为定义他的代码块中
 * 4.全局变量（属性）可以不赋值，直接使用，因为有默认值，局部变量必须赋值后才能使用，因为没有默认值
 */
public class Demo01 {
    public static void main(String[] args) {
        Cat c1 = new Cat();
        c1.hi();
        c1.cry();
        c1.eat();
    }
}

class Cat {
    //全局变量：也就是属性，作用域为整个类体 Cat类：cry eat等方法都属于属性 属性在定义的时候，可以直接赋值
    int age = 10;//指定的值10
    //全局变量（属性）可以不赋值，直接使用，因为有默认值
    double weight;//默认值是不是0.0

    public void hi() {
        //局部变量必须赋值后才能使用，因为没有默认值
        int num = 1;
        String address = "西安的鱼";
        System.out.println("num=" + num);
        System.out.println("address=" + address);
        System.out.println("weight=" + weight);
    }

    public void cry() {
        //1.局部变量一般是指在成员方法中定义的变量
        //2.n和name就是局部变量
        //3.n和name的作用域在cry的方法中
        int n = 10;
        String name = "jack";
        System.out.println("在cry中使用属性age=" + age);
    }

    public void eat() {
        System.out.println("在eat中使用属性age=" + age);
        //System.out.println("在eat中使用cry的变量name="+name); 错误
    }
}